﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using Microsoft.ApplicationBlocks.Data;

namespace AG.Datos.AccesoADatos.Implementacion
{
    public class DatosDominio
    {

        /// <summary>
        /// Metodo que consulta todos los dominios
        /// </summary>
        /// <returns>DataSet con todos los registros</returns>
        public DataSet ConsultarTodosValoresDeDominio()
        {
            Conexion miConexion = new Conexion();
            DataSet ds;
            try
            {

                miConexion.AbrirConexionBd();
                ds = SqlHelper.ExecuteDataset(miConexion.GetCadenaConexion(), CommandType.StoredProcedure, "com_ConsultarTodosLosDominios");

            }
            catch
            {
                throw;
            }
            finally
            {
                miConexion.CerrarConexionBd();
            }
            return ds;
        }

        /// <summary>
        /// Metodo que agrega un dominio a la base de datos
        /// </summary>
        /// <param name="dominio">tipo de dominio</param>
        /// <param name="descripcion">descripcion del dominio</param>
        /// <param name="valor">valor del dominio</param>
        /// <returns></returns>
       public bool AgregarDominio(string dominio,string descripcion, int valor)
        {
            bool retorno = true;
            SqlDataReader reader = null;
            Conexion miConexion = new Conexion();
            SqlCommand command = new SqlCommand();
            try
            {
              //  Se abre la conexion a base de datos
                miConexion.AbrirConexionBd();

                //Se introducen los datos de la conexion
                command.Connection = miConexion.ObjetoConexion();
                command.CommandType = System.Data.CommandType.StoredProcedure;
                command.CommandText = "[dbo].[com_InsertarValorDominio]";
                command.CommandTimeout = 10;
                command.Parameters.AddWithValue("@dominio", dominio);
                command.Parameters.AddWithValue("@descripcion", descripcion);
                command.Parameters.AddWithValue("@valor", valor);

                reader = command.ExecuteReader();

            }
            catch (SqlException e)
            {
                System.Console.WriteLine(e.StackTrace);
                System.Console.ReadLine();
                retorno = false;
            }

            catch (Exception e)
            { 
                System.Console.WriteLine(e.StackTrace);
                System.Console.ReadLine();
                retorno = false;
            }

            finally
            {
                if (reader != null)
                    reader.Close();
                miConexion.CerrarConexionBd();
            }

            return retorno;
        }


        /// <summary>
        /// Metodo que elimina el dominio de la base de datos
        /// </summary>
        /// <param name="id">id a eliminar</param>
        /// <returns>true o false</returns>
       public bool EliminarDominio(int id)
       {
           bool retorno = true;
           SqlDataReader reader = null;
           Conexion miConexion = new Conexion();
           SqlCommand command = new SqlCommand();
           try
           {
               //  Se abre la conexion a base de datos
               miConexion.AbrirConexionBd();

               //Se introducen los datos de la conexion
               command.Connection = miConexion.ObjetoConexion();
               command.CommandType = System.Data.CommandType.StoredProcedure;
               command.CommandText = "[dbo].[com_EliminarValorDominio]";
               command.CommandTimeout = 10;
               command.Parameters.AddWithValue("@id", id);

               reader = command.ExecuteReader();

           }
           catch (SqlException e)
           {
               System.Console.WriteLine(e.StackTrace);
               System.Console.ReadLine();
               retorno = false;
           }

           catch (Exception e)
           {
               System.Console.WriteLine(e.StackTrace);
               System.Console.ReadLine();
               retorno = false;
           }

           finally
           {
               if (reader != null)
                   reader.Close();
               miConexion.CerrarConexionBd();
           }

           return retorno;
       }
    }
}
